561 词
TCP/IP 四层模型应用层 负责应用与应用之间的通信 HTTP、FTP、Telnet、DNS、SMTP等 应用层是不用去关心数据是如何传输的 传输层 应用层的数据包会传给传输层,传输层(Transport Layer)是为应用层提供网络支持的。 在传输层会有两个传输协议,分别是 TCP 和 UDP。 TCP 的全称叫传输控制协议(Transmission Control Protocol)。TCP 相比 UDP 多了很多特性,流量控制、超时重传、拥塞控制等,这些都是为了保证数据包能可靠地传输给对方。 当传输层的数据包大小超过 MSS(TCP 最大报文段长度) ,就要将数据包分块, 这样即使中途有一个分块丢失或损坏了,只需要重新发送这一个分块,而不用重新发送整个数据包。 一台设备上可能会有很多应用在接收或者传输数据,因此需要用一个编号将应用区分开来,这个编号就是端口。 网络层 网络层最常使用的是 IP 协议(Internet Protocol),IP 协议会将传输层的报文作为数据部分,再加上 IP 包头组装成 IP 报文 如果 IP 报文大小超过 MTU(以太网...
96 词
从输入网址到网页显示发生了什么解析URL、生成生产 HTTP 请求信息DNS解析 有一种服务器就专门保存了 Web 服务器域名与 IP 的对应关系,它就是 DNS 服务器。 在域名中,越靠右的位置表示其层级越高。
382 词
网络复习指南从输入一个URL到网站显示,过程发生了什么 合法校验 DNS解析 IP解析 TCP/IP 建立连接 HTTP建立连接 服务端返回数据 Dom树渲染 CSSom树渲染 生成渲染树 网络七层模型,TCP/IP四层模型什么是HTTP 超文本传输协议 应用层协议,基于TCP 简单可扩展 无状态 HTTP的发展历程,各个版本的特点,解决了什么问题 HTTP/0.9 HTTP/1.0 HTTP/1.1 HTTP/2/0 HTTP/3.0 HTTP报文分析 请求体 请求体 空行 常见的请求方法常见的API设计风格 RESTful API GraphQL API SOAP API 常见的请求头cookiehttp缓存HTTP和HTTPS的区别跨域问题 跨域问题常见的解决方案: CORS 代理 JSONP Websocket PostMessage CORS ​
598 词
跨域问题背景跨域问题导致了浏览器无法拿到服务器的响应结果,把它拦截了下来,请求实际上是到达了服务器的,跨域是在浏览器同源策略的校验不通过产生的。 具体过程对于浏览器来说,对于不同的请求内容,它会有不同的处理方式。 简单请求概念 请求方法为GET POST HEAD 头部字段符合CORS安全规范 请求体内容为 text/plain multiple/form-data multiple/x-www-form-urlencoded 请求流程 浏览器发送请求到服务器。 服务器处理请求并返回响应。 浏览器检查 Access-Control-Allow-Origin,决定是否拦截响应。 复杂请求概念不是简单请求的都是复杂请求,复杂请求在实际请求发送之前会发送一个预检请求(preflight)Options方法。 请求过程 浏览器发送预检请求(OPTIONS)到服务器。 服务器返回预检响应。 预检响应里面会有服务器允许的请求体和请求体格式、以及这个预检校验生效时间(Access-Control-Max-Age),在这个时间以内,浏览器不用发送预检请求询...
93 词
变与不变前面提到了设计模式的核心是封装和变化 将不变的东西封装稳定,使变化的东西扩展灵活 于是乎我们如何去理解不变和变就变成了一个核心,有时候你认为的变其实是不变,你认为的变有一部分是不变。
581 词
学习设计模式的必要性我相信每个团队都不缺会用 Node,或者说用任何一门语言去写 Hello World 的同学,缺的是能够驾驭这门语言,能凭借自己深刻的架构思想和工程思想去支配这门语言,利用它去创造牛逼产出的人。 驾驭技术的能力。 具体来说,它分为以下三个层次: 能用健壮的代码去解决具体的问题; 能用抽象的思维去应对复杂的系统; 能用工程化的思想去规划更大规模的业务。 SOLID原则 “SOLID” 是由罗伯特·C·马丁在 21 世纪早期引入的记忆术首字母缩略字,指代了面向对象编程和面向对象设计的五个基本原则。 设计原则是设计模式的指导理论,它可以帮助我们规避不良的软件设计。SOLID 指代的五个基本原则分别是: 单一功能原则(Single Responsibility Principle) 开放封闭原则(Opened Closed Principle) 里式替换原则(Liskov Substitution Principle) 接口隔离原则(Interface Segregation Principle) 依赖反转原则(Dependency Inversion Pri...
2k 词
PM2 简单入门介绍PM2 是一个守护进程管理器,它将帮助您管理并保持您的应用程序。 简单来说有以下场景: 当进程崩溃或异常退出时,默认情况下,PM2 会无限次重启崩溃的进程,除非你设置了重启限制。 当进程内存或 CPU 占用过高时,你可以为进程配置内存或 CPU 使用的上限。当超过设定的阈值时,PM2 会自动重启该进程,以避免系统资源被消耗殆尽。 当服务器重启或宕机时,PM2可以在服务器重启时自动启动并恢复之前运行的进程 当应用代码更新后自动重启,可以使用 watch 选项让 PM2 自动监控文件变化,并在检测到代码更新时自动重启进程。 日志管理,PM2 提供了强大的日志管理功能,可以通过命令查看、清除日志,也可以将日志存储在文件中,方便日后分析。 负载均衡,PM2 提供了内置的负载均衡(cluster mode),可以在多核服务器上启动多个实例,并自动分配流量给不同的实例。 持久性配置与状态恢复,通过 pm2 save 保存进程列表,pm2 resurrect 恢复上一次保存的进程状态。 操作启动1pm2 start index.js 重启pm2 restart 是简单...
3.7k 词
一、项目打包目前了解到的next项目的打包有三种模式: 静态站点生成(SSG) 12345const nextConfig = { output:'export'};export default nextConfig; 优点: 静态站点生成(SSG): 所有的页面内容都在构建时被预渲染,并生成静态文文件 部署: 适合部署在不支持服务端渲染的环境,比如github Page或者其他静态托管站点托管服务 缺点: 不支持动态路由。 所有的页面都在构建时生成, 无法使用SSR渲染动态数据, 不能使用API路由,也就是说不能使用到编写后端接口的功能,next全栈的优势就没了 可能不是传统意义上的SSR(在页面初次渲染时,能根据不同的条件会返回不同的HTML) 生成的目录结构: 二、混合模式 12345const nextConfig = { output:'standalone'};export default nextConfig; 优点: 独立部署: 使用 output: &...
4.2k 词
基于Github Actions 和 docker 的前端项目CI/CD项目背景​ 最近在写一个管理系统项目的时候出现了一些比较麻烦的问题,由于进度比较赶,项目虽然上线了,但是还需要继续开发,这就涉及到频繁的构建和部署。 ​ 首先讲一下没使用CI/CD 之前的部署方式: 首先使用pnpm build,拿到项目的打包产物.output文件夹 将.output文件夹压缩,并通过服务器可视化工具宝塔,将压缩包上传到指定文件夹下 第一次部署时使用pm2命令pm2 start ./.output/server/index.mjs -name 'xxx'启动项目 以后的部署都直接使用 pm2 restart [name] 即可 后面重构的时候了解到pm2还有文件监听功能, 启动命令就换成了pm2 start ./.output/server/index.mjs -name 'xxx' --watch, 这样就不用每次都打开终端重启pm2 进程了 ​ 但是这种部署方式实在繁琐,我需要通过:1. 手动打包项目, 2. 将打包产物压...